package tt.dz.service.middleware;

import java.util.Map;

import org.jboss.netty.channel.Channel;

import tt.dz.entity.base.JsonCommon;
import tt.dz.tcp.socket.MessageFuture;
import tt.dz.tcp.socket.exception.CreateConnectionFailException;
import tt.dz.tcp.socket.exception.DuplicateInstructionException;
import tt.dz.tcp.socket.exception.RetryFailException;
import tt.dz.tcp.socket.exception.SendMsgTimeOutException;

public interface MessageService {
	public String send(String data);//长连接的时候要处理接收的信息
	public JsonCommon receive(String data,Channel c);//需要对receive的信息再次下发的时候生成预备下发的信息
	
	public JsonCommon receive(Map<String, String> map,Channel c) throws Exception;//需要对receive的信息再次下发的时候生成预备下发的信息
	/**
     * 发送消息并等待返回
     * @param msg 业务消息
     * @param timoutMillisecond 超时时间
     * @return 业务消息
     */
	public String sendAndWait(String msg, long timoutMillisecond) throws RetryFailException, SendMsgTimeOutException;
	
	/**
     * 发送消息立即返回，无需等待 /接收服务器端的返回结果
     */
	public MessageFuture sendNoWait(String msg, String chargerid) throws RetryFailException, CreateConnectionFailException, DuplicateInstructionException;
	
	//处理桩异常掉线
	public void offlineCharger(String chargerId);
}
